package org.spiniper.im.data.model;

import java.io.Serializable;

/**
 * 消息结果
 * 
 * @version 1.0 
 * @author Hunk.Tong &copy; Ustudy 游学网络
 * <b>Create Time:</b>2013-11-20 上午10:24:24
 */
public interface MessageResults extends Serializable{
	
	/**
	 * 此消息是否需要回复
	 * @return 需要回复为true 否则为false
	 */
	boolean isReply();
	
	/**
	 * 执行结果，消息结果所需要的动作,此动作可能为抽取数据，也可能为执行命令，也可以是进行回复
	 * 如子类无执行动作，则忽略此方法
	 */
	void execute();
	
	/**
	 * 执行结果，并通过回调对象获取数据
	 * @param callback 回调对象
	 */
	void execute(ICallback callback);
	
	/**
	 * 获取数据通道，通常数据抽取动作有execute内完成，一般在一些特殊操作中可能需要获取数据，另行处理
	 * @return 数据通道
	 */
	DatasChannel getDatasChannel();
	
}
